package ve.usb.cep.actions;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import ve.usb.cep.db.Session;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import ve.usb.cep.db.domainObjects.Usuario;
import ve.usb.cep.db.models.UsuarioModel;
import ve.usb.cep.db.modelExceptions.UsuarioException;
import ve.usb.cep.util.Hash;
 
public class VerificarcontrasenaA extends ActionSupport {

    protected String clave = "";
    protected Usuario u;
    private String attempt = "0";

    @Override
    public String execute()
        throws java.sql.SQLException,
               java.security.NoSuchAlgorithmException,
               java.io.UnsupportedEncodingException
    {

        if (!attempt.equals("1")){
            return "input";
        }

        try {
            Connection conn = Session.connection();
            PreparedStatement pstmt;
            ResultSet rs;
            
            Map session = ActionContext.getContext().getSession();
            u = (Usuario) session.get("usuario");
            
            pstmt = conn.prepareStatement("select * from usuario where correo=?");
            pstmt.setString(1, u.getCorreo());
            rs = pstmt.executeQuery();
            rs.next();

            Usuario user = new Usuario();
            user.setNombre(u.getNombre());
            user.setApellido(u.getApellido());
            user.setClave(getClave());
            user.setCedula(u.getCedula());
            user.setRol(rs.getString("rol"));
            user.setTelefono(u.getTelefono());
            user.setCorreo(u.getCorreo());
            user.setPregunta(u.getPregunta());
            user.setRespuesta(u.getRespuesta());
            user.setCodigo(rs.getInt("codigo"));

            new UsuarioModel().set(user);
        }catch(Exception e){
            e.printStackTrace();
        }

        return "success";
    }
    
    @Override
    public void validate() {

       if (!getAttempt().equals("1")){
           return;
       }

       if (getClave().length() == 0) {
           addFieldError("clave", "Debe colocar un valor para su nueva contraseña.");
           return;
       }
      
    }

    public String getClave() {
        return this.clave;
    }
    public void setClave(String clave) {
        this.clave = clave;
    }
    
    public String getAttempt() {
        return this.attempt;
    }
    public void setAttempt(String correo) {
        this.attempt = correo;
    }
}
